import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex); //  在vue中使用vuex插件

// 优化:
// 问题1: store实例中的state,getters,mutations,actions全都写在一起 => 代码量过多
// 解决方法: store实例代码分离: 分别将getters,mutations,actions分离为单独的js文件 => 在通过模块化语法引入 => index.js中的结构更加简洁

// 问题2: 由于使用单一状态树，应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时，store 对象就有可能变得相当臃肿。
// 解决方法: 为了解决以上问题，Vuex 允许我们将 store 分割成模块（module）。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块

import getters from "./getters"
import mutations from "./mutations"
import actions from "./actions"

import mdA from "./modules/mdA"
import mdB from "./modules/mdB"

var store = new Vuex.Store({
  state: { // 公共数据
    a: 1,
    b: 2,
  },
  getters: getters,
  mutations:mutations,
  actions: actions,
  modules: {
    mdA:mdA, // 没有配置命名空间
    mdB:mdB, // 配置了命名空间
  }
})

export default store;
